//二维数组指针大小理解
#include <stdio.h>

int main()
{
    int a[3][4] = {0};
    printf("%d\n", sizeof(a));//48
    printf("%d\n", sizeof(a[0][0]));//4
    printf("%d\n", sizeof(a[0]));//16
    printf("%d\n", sizeof(a[0] + 1));//8//a[0]没有单独放在sizeof内部，表示&a[0][0]
    printf("%d\n", sizeof(*(a[0] + 1)));//4
    printf("%d\n", sizeof(a + 1));//8
    printf("%d\n", sizeof(*(a + 1)));//16//对第二行地址解引用，int (*p)[4] = a + 1，解引用后类型为int [4]。
                                         //*(a + 1) == a[1]
    printf("%d\n", sizeof(&a[0] + 1));//8
    printf("%d\n", sizeof(*(&a[0] + 1)));//16
    printf("%d\n", sizeof(*a));//16//此时a为首元素地址
    printf("%d\n", sizeof(a[3]));//16//sizeof只管类型，不访问
    return 0;
}